관계형 데이터베이스 관리 시스템(RDBMS)
✒️ 2025-06-09 10:10 내용 수정
관계형 데이터베이스
행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스
- 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스
- SQL을 이용하여 관리 및 접근
- 다양한 용도로 사용 가능
- ex) Oracle, MySQL, Microsoft SQL Server, PostgreSQL 등
테이블(Table)
행과 열로 이루어진 데이터의 집합
- 엑셀의 형태와 매우 흡사하고, 일반적인 데이터베이스에서는 행과 열만 있으면 테이블이라고 한다.
- 관계형 데이터베이스에선 특별한 제약을 추가해서 Relation 이라고 부른다.

1. 행(row) / 튜플(tuple) / 레코드(record)
- 테이블을 구성하는 데이터들 중 가로로 묶인 데이터 셋
- 기수(Cardinality) : 행의 수
2. 열(column) / 필드(field) / 속성(attribute)
- 테이블을 구성하는 데이터들 중 세로로 묶인 데이터 셋
- 도메인(domain) : 하나의 속성이 취할 수 있는 동일한 유형의 데이터 집합을 의미하며, 열을 구성하는 값들은 같은 도메인으로 되어있다.
- 차수(Degree) : 열의 수
제약 조건(Constraint)
테이블에 문제가 되거나 결함이 있는 데이터가 입력되지 않도록 미리 지정해둔 조건
- 테이블 생성 시 함께 설정하거나 테이블 생성 후에 추가 및 변경할 수 있다.
- 이미 데이터가 포함된 상황에서 제약 조건을 함부로 바꾸기에 어려우니 사전에 잘 설계해야 한다.
| 제약 조건 | Null 허용 여부 | 데이터 중복 허용 여부 | 특징 |
|---|---|---|---|
| PRIMARY KEY(고유키) | X | X | 지정한 열은 반드시 유일값을 가짐. 테이블 당 1개만 지정 가능 |
| FOREIGN KEY(외래키) | - | - | 데이터 중복 없이 이미 존재하는 데이터를 참조해서 가져올 때 사용. 참조 시 해당 테이블에 존재하는 값만 입력 가능. |
| UNIQUE(유일키) | O | X (NULL끼리는 중복 간주 X) | 지정한 열은 반드시 유일값을 가짐. 테이블 당 1개만 지정 가능 |
| NOT NULL | X | O | 해당 컬럼에 아무 값이 없거나 NULL이 들어오면 동작함 |
| CHECK | - | - | 설정한 조건식을 만족하는 데이터만 입력 가능. 조건식을 만족하지 않으면 데이터의 입력을 거부함 |
| DEFAULT | 아무 값도 없으면 설정한 기본값이 입력됨 | O | 값이 입력되면 기본값이 무시됨. NULL이 들어와도 값이 들어온 것으로 취급함. |
- DEFAULT와 NOT NULL을 같이 선언할 경우 해당 속성에 아무 값도 넣지 않고 데이터를 추가하면 DEFAULT가 동작하여 기본 값이 들어가고, 해당 속성에 NULL 값을 넣어 데이터를 추가하면 NOT NULL이 동작하여 NULL 값의 입력을 막는다.
- ex1) ID, 전화번호, 이메일은 모두 중복 불가한 데이터지만, PRIMARY KEY를 ID에만 주면 전화번호와 이메일에는 PRIMARY KEY를 설정하지 못하므로 대신에 UNIQUE를 부여한다.
- ex2) 위 예시에서 전화번호와 이메일에 UNIQUE + NOT NULL을 부여하면 PRIMARY KEY와 비슷한 효과를 낼 수 있다.
데이터베이스의 key
데이터베이스에서 데이터를 식별하거나 테이블 간의 관계를 정의할 때 사용하는 속성
- 참고 자료 : Geeksforgeeks Types of Keys in Relational Model
- 데이터의 무결성(정확성, 일관성, 유효성)을 지키고, 중복을 구분하며, 데이터 조회에 사용된다.
- 유일성과 희소성을 가진 속성만이 key가 될 수 있다.
- 유일성 : 식별자에 의해 개체 내의 모든 속성(튜플)들이 유일하게 구분되는 특성
- 최소성 : 최소한의 속성으로 식별자를 구성하는 특성

| 키 종류 | 설명 | 주요 특징 |
|---|---|---|
| 슈퍼 키 (Super Key) |
테이블을 구성하는 모든 속성에 대해 유일성 O, 최소성 X | 하나 이상의 속성으로 구성 행을 고유하게 식별함 중복된 속성을 포함할 수 있음 |
| 후보 키 (Candidate Key) |
슈퍼 키 중에서 최소한의 속성만으로 구성된 키 | 각 테이블에는 하나 이상의 후보 키가 있을 수 있음 각 후보 키는 행을 고유하게 식별함 중복된 속성이 없음 |
| 기본 키 (Primary Key) |
테이블의 각 행을 고유하게 식별하는 키 후보 키 중에서 선택된 키 |
각 테이블에는 하나의 기본 키만 존재함 NULL 값을 허용하지 않음 중복된 값을 가질 수 없음 |
| 대체 키 (Alternate Key) |
기본 키로 선택되지 않은 후보 키 | 기본 키 외에 행을 고유하게 식별할 수 있는 다른 키 NULL 값을 허용하지 않음 중복된 값을 가질 수 없음 |
| 외래 키 (Foreign Key) |
다른 테이블의 기본 키를 참조하는 키 테이블 간의 관계를 정의 |
참조된 테이블의 기본 키 값을 가짐 데이터의 무결성을 유지하는 데 사용됨 NULL 값을 허용 |
| 고유 키 (Unique Key) |
각 행의 특정 열이 고유한 값을 가지도록 보장하는 키 | 기본 키와 비슷하나 NULL 허용 유무가 다름 중복된 값을 허용하지 않음 NULL 값을 하나까지 허용 |
| 복합 키 (Composite Key) |
두 개 이상의 열을 조합하여 행을 고유하게 식별하는 키 | 단일 열로는 행을 고유하게 식별할 수 없을 때 사용 여러 열의 조합으로 고유성을 보장함 |
- 외래키의 경우 참조하는 부모 테이블의 데이터가 변경될 때 데이터의 무결성을 유지하기 위한 다양한 옵션을 설정할 수 있다.
ON UPDATE와ON DELETE동작에 적용할 수 있다.
| 동작 | 설명 | 영향받는 컬럼 | 사용 시 조건 |
|---|---|---|---|
| CASCADE | 부모 삭제/수정 시 자식도 연쇄 삭제/수정 | 자식 전체 행 | 트리거나 제약 조건과 충돌 주의 |
| SET NULL | 부모 삭제/수정 시 외래키 컬럼을 NULL로 설정 | 외래키 컬럼 | 해당 컬럼은 NULL 허용해야 함 |
| RESTRICT | 참조 중이면 부모 삭제/수정 거부 | 해당 없음 | 기본 설정, 명시적 설정해도 동일 |
| NO ACTION | RESTRICT와 유사하나 체크 시점만 다름 | 해당 없음 | 트랜잭션 제약이 끝날 때 체크됨 |
| SET DEFAULT | 부모 삭제/수정 시 외래키 컬럼을 기본값으로 설정 | 외래키 컬럼 | DEFAULT 값 지정 + NOT NULL 불가 |